/* NOTICE
    OpenJaWS - Open Java Weather Station
    
    Copyright (C) 2008 Grant Gardner <grant@lastweekend.com.au>
    
    OpenJaWS is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
NOTICE */

package au.com.lastweekend.openjaws.plugins;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import au.com.lastweekend.openjaws.api.Readings;
import au.com.lastweekend.openjaws.api.WeatherPlugin;
import au.com.lastweekend.openjaws.api.WeatherPluginException;

/**
 * Delegates to a subordinate list of other plugins.
 * 
 * Typically the bottom of a {@link DecoratedWeatherPlugin} chain.
 * 
 * @author grant@lastweekend.com.au
 * @version $Id: codetemplates.xml,v 1.2 2005/01/22 06:53:11 ggardner Exp $
 */
public class ListPlugin implements WeatherPlugin {

    private static final Logger LOG = LoggerFactory.getLogger(ListPlugin.class);
    private List<WeatherPlugin> plugins;

    public ListPlugin(List<WeatherPlugin> plugins) {

        this.plugins = plugins;
    }

    public void process(Readings readings) throws WeatherPluginException {

        for (WeatherPlugin plugin : plugins) {
            try {
                plugin.process(readings);
            } catch (WeatherPluginException e) {
                LOG.error("Unhandled exception", e);
            }
        }

    }

}
